package com.web.base.auth.facade;

import com.web.base.auth.message.MenuRequest;
import com.web.base.auth.message.MenuResponse;
import com.web.base.auth.message.RoleMenuRequest;

import java.util.List;
import java.util.Map;

/**
 * 菜单接口
 * 
 * @author 代码由 blue-code 框架生成
 * @since 1.0 2017年04月15日
 */
public interface MenuFacade
{

	/**
	 * 添加菜单
	 */
	MenuResponse add(MenuRequest request);

	/**
	 * 更新菜单
	 */
	MenuResponse update(MenuRequest request);
	
	/**
	 * 查询单个菜单
	 */
	MenuResponse get(Integer id);
	
	/**
	 * 主页菜单
	 */
	Map<String, List<MenuResponse>> index(Integer userId);
	
	/**
	 * 菜单列表
	 */
	Map<String, List<MenuResponse>> list(MenuRequest request);
	
	/**
	 * 刷新缓存
	 */
	void refresh();
	
	/**
	 * 添加角色－菜单关系
	 */
	void addRoleMenu(RoleMenuRequest request);
	
	/**
	 * 按应用查询角色－菜单关联关系
	 */
	Map<String, List<MenuResponse>> listSelect(Integer roleId);

	/**
	 * 删除菜单
	 */
	void delete(Integer id);
	
}
